package vn.edu.saigontech.ncms.service;

import java.util.Collection;
import java.util.Date;
import java.util.List;
import java.util.Map;

import vn.edu.saigontech.ncms.model.info.AbstractReceipt;
import vn.edu.saigontech.ncms.model.info.Student;
import vn.edu.saigontech.ncms.model.program.Program;
import vn.edu.saigontech.ncms.service.impl.StudentServiceImpl;

public interface StudentService extends GenericService<Student, Long> {

	static final StudentService INSTANCE = new StudentServiceImpl();

	Collection<Student> findRecently();

	void merge(Long[] ids, Long id);

	Map<Student, List<AbstractReceipt>> findStudy(Date dateFrom, Date dateTo, boolean includeInactive);
	
	Map<Student, List<AbstractReceipt>> findUnStudy(Date dateFrom, Date dateTo);

	Map<Student, List<AbstractReceipt>> findByBirthDay(int month);
	
	Map<Student, List<AbstractReceipt>> findByBirthDayAndProgram(int month, long programId);

	List<Student> findByMonth(int month, int year);

	int findByProgram(int month, int year, Program program);
	
	
	/* halnt */
	Object[] findByDateNProgram(int month, int year, Program program);
	
	Object[] findFreeTuitionByDateNTuition(int month, int year, Long studentTypeId);
	
	Collection<Student> findAllRecently();
	
	Collection<Student> findAllRecentlyByDate();
	
	Collection<Student> findByDateAndProgram(Long ProgramId, Date form, Date to, boolean oddDay);
	
	Collection<Student> findByConsultDate(Date form, Date to);
}